#ifndef FOCUS_EVALUATION_H
#define FOCUS_EVALUATION_H

#include <opencv2/opencv.hpp>

class FocusEvaluation
{
public:
	virtual ~FocusEvaluation() = default;
	virtual double evaluate(const cv::Mat& image) = 0;
	virtual void selectRegion(const cv::Mat& image, cv::Mat& region, const cv::Size& regionSize);
};


class FourierEvaluation: public FocusEvaluation
{
public:
	double evaluate(const cv::Mat& image) override;
};


class VarianceEvaluation: public FocusEvaluation
{
public:
	double evaluate(const cv::Mat& image) override;
};

#endif

